package day28.homework;

/*
 * 创建线程，将该线程睡眠，然后打断该线程睡眠状态，查看是否被打断
 */

public class hw4 {
    public static void main(String[] args) {
        // 创建一个实现了Runnable接口的类的实例
        Runnable runnableTask = new Runnable() {
            @Override
            public void run() {
                try {
                    System.out.println("子线程开始睡眠，持续5秒钟");
                    // 让线程睡眠5秒钟 (5000毫秒 = 5秒)
                    Thread.sleep(5000);
                    System.out.println("子线程睡眠结束，正常醒来");
                } catch (InterruptedException e) {
                    // 当线程在睡眠中被打断时会抛出InterruptedException异常
                    System.out.println("子线程睡眠被其他线程中断");
                    // 恢复中断状态，以便其他代码能检测到中断
                    Thread.currentThread().interrupt();
                }
            }
        };
        
        // 使用Runnable任务创建一个线程对象
        Thread workerThread = new Thread(runnableTask);
        
        // 启动线程，线程开始执行run()方法中的代码
        System.out.println("主线程启动子线程");
        workerThread.start();

        try {
            // 主线程睡眠1秒钟 (1000毫秒 = 1秒)
            // 这样可以确保workerThread线程已经进入sleep状态
            System.out.println("主线程等待1秒钟，让子线程进入睡眠状态");
            Thread.sleep(1000);
            
            System.out.println("主线程中断子线程的睡眠");
            // 调用interrupt()方法打断workerThread线程的睡眠状态
            workerThread.interrupt();
        } catch (InterruptedException e) {
            System.out.println("主线程的sleep被中断");
            e.printStackTrace();
        }
    }
}